home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tj.d64 / golf handicap (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  14KB  |  527 lines

  1. 10 REM GOLF HANDICAP
  2. 20 REM AL JOHNSON
  3. 25 REM 12302 COLERAINE CT
  4. 30 REM RESTON, VA  22091
  5. 35 REM SEND ME A CARD IF YOU LIKE IT OR
  6. 40 REM HAVE ANY SUGGESTIONS
  7. 100 POKE53280,11:POKE53281,15
  8. 110 GOSUB8000
  9. 115 RL=25
  10. 120 DIM CR$(20,24),RD$(50,25),HG$(50,18),HF$(50,18),CU(25,23)
  11. 125 DIM HC(50,7),SC(4)
  12. 130 OPEN15,8,15,"I0":OPEN6,8,6,"0:GLF COURSE,S,R":GOSUB9600
  13. 140 IF EN<>0 THEN OM$="COURSE FILE NOT FOUND":GOTO220
  14. 150 INPUT#6,CC
  15. 160 FORX=1TOCC:FORY=1TO23:INPUT#6,CR$(X,Y):NEXTY:NEXTX
  16. 210 CLOSE6:CLOSE15
  17. 220 U1$="[164]":U2$="[164][164]":SP$="                                   "
  18. 230 U9$="[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
  19. 240 FORX=1TO25:READA,B,C:CU(X,1)=A:CU(X,2)=B:CU(X,3)=C:NEXTX
  20. 250 FORX=828TO828+10   :READA:POKEX,A:NEXTX
  21. 260 POKE850,22:POKE851,8:SYS828
  22. 270 PRINT"PRESS ANY KEY WHEN READY":GOSUB9200
  23. 490 GOTO5000
  24. 499 REM ** LIST COURSE NAMES
  25. 500 PRINT"[147]";TAB(13);"COURSES"
  26. 510 FORX=1TOCC
  27. 520 PRINT"";X;TAB(8);CR$(X,1);TAB(31);CR$(X,23)
  28. 540 NEXTX
  29. 550 PRINT"[151]ENTER NUMBER OF COURSE PLAYED"
  30. 553 INPUT"[151]OR _ IF COURSE NOT SHOWN";CX$:CX=VAL(CX$)
  31. 555 IF CX$="_" THEN RETURN
  32. 560 IF CX<1 OR CX>CC THEN PRINT"INVALID":GOTO550
  33. 570 RETURN
  34. 698 REM *****LOAD SUBROUTINE
  35. 700 PRINT"[147]LOADING GOLF FILE"
  36. 710 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU"
  37. 720 GOSUB9200:IF K$<>"C" THEN OM$="NO LOAD":RETURN
  38. 730 OPEN15,8,15,"I0"
  39. 740 OPEN7,8,7,"0:GOLF DATA,S,R":GOSUB9600
  40. 750 IF AB$="Y"THEN OM$="NO ROUNDS FOUND":GOTO890
  41. 760 INPUT#7,RC
  42. 770 FORX=1TORC
  43. 780 FORY=1TO25:INPUT#7,RD$(X,Y):NEXTY
  44. 790 FORY=1TO18:INPUT#7,HG$(X,Y):NEXTY
  45. 840 FORY=1TO18:INPUT#7,HF$(X,Y):NEXTY
  46. 870 NEXTX
  47. 880 OM$="LOAD OK "+STR$(RC)+" ROUNDS"
  48. 890 CLOSE7:CLOSE15
  49. 900 RETURN
  50. 998 REM ** SAVE SUBROUTINE
  51. 1000 PRINT"[147]SAVE THE ROUNDS TO DISK"
  52. 1010 PRINT"[151]C[146] TO CONTINUE - OTHER FOR MENU"
  53. 1020 GOSUB9200:IFK$<>"C" THEN OM$="SAVE NOT DONE":RETURN
  54. 1030 OPEN15,8,15,"I0"
  55. 1040 OPEN8,8,8,"@0:GOLF DATA,S,W":GOSUB9600
  56. 1050 IF AB$="Y" THEN OM$="DISK ERROR - "+EM$":GOTO1130
  57. 1055 SV$[178]"Y"
  58. 1060 [152]8,RC
  59. 1070 [129]X[178]1[164]RC
  60. 1080 [129]Y[178]1[164]25:[152]8,RD$(X,Y):[130]Y
  61. 1090 [129]Y[178]1[164]18:[152]8,HG$(X,Y):[130]Y
  62. 1100 [129]Y[178]1[164]18:[152]8,HF$(X,Y):[130]Y
  63. 1110 [130]X
  64. 1120 OM$[178]"SAVE OK - "[170][196](RC)[170]" ROUNDS"
  65. 1130 [160]8:[160]15
  66. 1140 [142]
  67. 1198 [143] **** BACK UP SUBROUTINE
  68. 1200 [153]"LOADBACKUP GOLF ROUNDS"
  69. 1210 [153]"POKECWAIT TO CONTINUE - OTHER FOR MENU":[141]9200
  70. 1220 [139]K$[179][177]"C" [167] OM$[178]"NO BACKUP":[142]
  71. 1230 [153]"INSERT BACKUP DISK
  72. 1240 PRINT"HIT A KEY[151]":GOSUB9200
  73. 1260 OPEN15,8,15,"I0"
  74. 1270 OPEN8,8,8,"GOLF DATA-BK,S,W":GOSUB9600
  75. 1280 IF AB$<>"Y" THEN 1310
  76. 1290 OM$="BKUP DISK ERROR - "+EM$:OP$="INSERT MAIN DISK OR 'Q'"
  77. 1300 CLOSE8:CLOSE15:RETURN
  78. 1310 GOSUB1060
  79. 1315 BK$="Y"
  80. 1320 OM$="BACKUP OK - "+STR$(RC)+" ROUNDS"
  81. 1330 OP$="INSERT MAIN DISK OR QUIT"
  82. 1340 RETURN
  83. 1498 REM *** FILL SCREEN FOR DISPLAY
  84. 1500 PRINT"[147]";TAB(10);"PERSONAL GOLF HANDICAP"
  85. 1510 PRINT"";TAB(15);"ROUNDS PLAYED"
  86. 1520 PRINTTAB(6);"[152]COURSE"
  87. 1530 PRINT" PAR";TAB(9);"RATING";TAB(22);"DATE PLAYED"
  88. 1540 PRINTTAB(10);"SC  G F";TAB(31);"SC  G F"
  89. 1550 FORX=1TO7STEP2
  90. 1560 PRINT"  HOLE ";X;TAB(23);"HOLE ";X+1
  91. 1570 NEXTX
  92. 1580 PRINT"  HOLE  9";TAB(23);"HOLE 10"
  93. 1590 FORX=11TO17 STEP2
  94. 1600 PRINT"  HOLE";X;TAB(23);"HOLE";X+1
  95. 1610 NEXTX
  96. 1620 PRINT"[152]";TAB(5);"PUTTS     SCORE      DFRNTL"
  97. 1630 PRINT"[152]A[146]DD  M[146]ODIFY  N[146]EXT  B[146]ACK  D[146]EL  Q[146]UIT"
  98. 1650 RETURN
  99. 1798 REM PUT UNDERLINE IN TABLE SUBR
  100. 1800 RD$(CP,2)=U2$+U2$
  101. 1810 RD$(CP,3)=U2$+U2$
  102. 1830 FORX=1TO18:RD$(CP,X+3)=U2$:HG$(CP,X)=U1$:HF$(CP,X)=U1$:NEXTX
  103. 1880 RD$(CP,23)=U2$
  104. 1890 RD$(CP,24)=U2$+U1$
  105. 1895 RETURN
  106. 1998 REM ** FILL DATA AREAS OF SCREEN
  107. 2000 PRINT"[151] #";STR$(CP):PRINT"OF ";STR$(RC)
  108. 2003 POKE850,3:POKE851,13:SYS828
  109. 2008 IF LEFT$(CN$,1)<>"[164]"THEN PP=VAL(RD$(CP,1)):CN$=CR$(PP,1)
  110. 2010 PRINT"[151]";CN$;"[146]           "
  111. 2020 FORX=2TO25
  112. 2030 POKE850,CU(X,1):POKE851,CU(X,2):SYS828
  113. 2035 PP=CU(X,3):PRINTLEFT$(SP$,PP);:SYS828
  114. 2040 PRINTRD$(CP,X)
  115. 2050 IF X<4 OR X>21 THEN 2100
  116. 2060 POKE850,CU(X,1):POKE851,CU(X,2)+4:SYS828
  117. 2070 PRINTHG$(CP,X-3)
  118. 2080 POKE850,CU(X,1):POKE851,CU(X,2)+6:SYS828
  119. 2090 PRINTHF$(CP,X-3)
  120. 2100 NEXTX
  121. 2110 RETURN
  122. 2198 REM ** CALC BIRDS PARS ETC
  123. 2200 FOR X=4 TO 21
  124. 2203 W9=VAL(RD$(CP,1))
  125. 2210 W=VAL(CR$(W9,X+1))-VAL(RD$(CP,X))
  126. 2220 IF W=2 THEN EG=EG+1
  127. 2230 IF W=1 THEN BI=BI+1
  128. 2240 IF W=0 THEN PA=PA+1
  129. 2250 IF W=-1 THEN BO=BO+1
  130. 2260 IF W=-2 THEN DB=DB+1
  131. 2270 IF W<-2 THEN OT=OT+1
  132. 2280 NEXTX
  133. 2285 IF S$="Y" THEN RETURN
  134. 2290 POKE850,19:POKE851,2:SYS828
  135. 2300 PRINT"EGL";EG;" BIRD";BI;" PAR";PA;
  136. 2310 PRINT" BOG";BO;" DBL";DB;"[151]"
  137. 2320 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0
  138. 2330 RETURN
  139. 2398 REM  CALC, STORE AND PRINT SCORES
  140. 2400 SC=0:PRINT"[151]"
  141. 2410 FORX=4TO21:SC=SC+VAL(RD$(CP,X)):NEXT
  142. 2420 RD$(CP,24)=STR$(SC)
  143. 2425 POKE850,CU(24,1):POKE851,CU(24,2):SYS828:PRINTSTR$(SC)
  144. 2430 CZ=VAL(RD$(CP,1))
  145. 2440 HD=(SC-VAL(CR$(CZ,3)))
  146. 2443 PP=(INT(HD*10)/10):RD$(CP,25)=STR$(PP)
  147. 2445 POKE850,CU(25,1):POKE851,CU(25,2):SYS828
  148. 2447 PRINT"     ":SYS828:PRINTRD$(CP,25)
  149. 2450 POKE850,CU(22,1):POKE851,CU(22,2):SYS828
  150. 2460 PRINTCR$(CZ,2):RD$(CP,22)=CR$(CZ,2)
  151. 2470 RD$(CP,2)=CR$(CZ,3)
  152. 2480 POKE850,CU(2,1):POKE851,CU(2,2):SYS828:PRINT"    ":SYS828
  153. 2490 PRINT RD$(CP,2)
  154. 2500 RETURN
  155. 2598 REM INPUT SUBR TO ADD A RND
  156. 2600 POKE850,CU(3,1):POKE851,CU(3,2):SYS828
  157. 2603 FP=3
  158. 2610 PRINT"?[157][151]";:GOSUB9000
  159. 2620 RD$(CP,3)=AN$
  160. 2630 FORX=4TO21
  161. 2640 POKE850,CU(X,1):POKE851,CU(X,2):SYS828
  162. 2645 PRINT"?[151][157]";
  163. 2647 FP=X
  164. 2650 GOSUB9000
  165. 2660 RD$(CP,X)=AN$
  166. 2670 POKE851,CU(X,2)+4:SYS828:PRINT"?[151][157]";
  167. 2680 GOSUB8800
  168. 2685 IF AN$<>"Y"THEN HG$(CP,X-3)="N":GOTO2695
  169. 2690 HG$(CP,X-3)="Y"
  170. 2695 PRINTHG$(CP,X-3);
  171. 2700 POKE851,CU(X,2)+6:SYS828:PRINT"?[151][157]";
  172. 2710 GOSUB8800
  173. 2715 IF AN$<>"Y"THENHF$(CP,X-3)="N":GOTO2725
  174. 2720 HF$(CP,X-3)="Y"
  175. 2725 PRINTHF$(CP,X-3);
  176. 2730 NEXTX
  177. 2740 POKE850,CU(23,1):POKE851,CU(23,2):SYS828
  178. 2750 PRINT"?[151][157]";
  179. 2760 GOSUB9000
  180. 2770 RD$(CP,23)=AN$
  181. 2780 RETURN
  182. 2900 POKE850,20:POKE851,6:SYS828
  183. 2910 RETURN
  184. 2950 POKE850,20:POKE851,6:SYS828
  185. 2960 PRINTSP$
  186. 2970 RETURN
  187. 3000 POKE850,CU(FP,1):POKE851,CU(FP,2):SYS828
  188. 3010 PRINT"?[151][157]";
  189. 3020 GOSUB9000
  190. 3030 IF VAL(AN$)<>0 THEN RD$(CP,FP)=AN$:GOTO3050
  191. 3040 PRINTRD$(CP,FP);"[155]"
  192. 3050 IF FP<4 OR FP>21 THEN PRINT"":RETURN
  193. 3060 POKE851,CU(FP,2)+4:SYS828
  194. 3070 PRINT"?[151][157]";
  195. 3080 GOSUB8800
  196. 3090 IF AN$<>"" THEN HG$(CP,FP-3)=AN$:PRINTAN$:GOTO3110
  197. 3100 PRINT"[151]";HG$(CP,FP-3);"[155]"
  198. 3110 POKE851,CU(FP,2)+6:SYS828
  199. 3120 PRINT"?[151][157]";:GOSUB8800
  200. 3130 IF AN$<>"" THEN HF$(CP,FP-3)=AN$:PRINTAN$:GOTO3150
  201. 3140 PRINT"[151]";HF$(CP,FP-3);"[152]"
  202. 3150 PRINT"[155]"
  203. 3160 RETURN
  204. 4990 REM ****************
  205. 4992 REM * MAIN PROG MENU
  206. 4994 REM ****************
  207. 5000 POKE53280,11:PRINT"[147]";TAB(15);"GOLF MENU"
  208. 5010 PRINT"[151]LOAD GOLF FILE";TAB(25);"L"
  209. 5020 PRINT"SAVE GOLF FILE";TAB(25);"S"
  210. 5030 PRINT"BACKUP GOLF FILE";TAB(25);"B"
  211. 5040 PRINT"ROUNDS";TAB(25);"R"
  212. 5050 PRINT"HANDICAP";TAB(25);"H"
  213. 5060 PRINT"STATISTICS";TAB(25);"C"
  214. 5070 PRINT"QUIT";TAB(25);"Q"
  215. 5080 PRINT"";OM$;"[146][151]":OM$="":AB$=""
  216. 5090 PRINT"";OP$;"[146][151]":OP$=""
  217. 5100 GOSUB9200
  218. 5110 IF K$="L" THEN GOSUB700:GOTO5000
  219. 5120 IF K$="S" THEN GOSUB1000:GOTO5000
  220. 5130 IF K$="B" THEN GOSUB1200:GOTO5000
  221. 5140 IF K$="R" THEN 5300
  222. 5150 IF K$="H" THEN 6200
  223. 5160 IF K$="C" THEN 6800
  224. 5170 IF K$="Q" THEN 7400
  225. 5180 GOTO5100
  226. 5300 IF RC=0THENCN$=U9$
  227. 5310 IF RC<>0 THEN CX=VAL(RD$(1,1)):CN$=CR$(CX,1)
  228. 5320 GOSUB1500: REM FILL SCREEN
  229. 5325 CP=1:POKE53280,6
  230. 5340 GOSUB2000: REM DATA TO SCREEN
  231. 5360 IF RC<>0 THEN GOSUB2200:GOSUB2400:REM COUNT BIRD PAR ETC
  232. 5370 IF RC=0THENGOSUB2900:PRINT"NO ROUNDS LOADED[151]"
  233. 5400 REM DUMMY LINE
  234. 5405 GET W$:IF W$="" THEN 5405
  235. 5410 IF W$="A" THEN POKE53280,2:GOTO5500
  236. 5420 IF W$="N" THEN POKE53280,6:GOTO5650
  237. 5430 IF W$="B" THEN POKE53280,6:GOTO5700
  238. 5440 IF W$="Q" THEN 5000
  239. 5450 IF W$="D"THEN POKE53280,11:GOTO5760
  240. 5460 IF W$="M" THEN POKE53280,7:GOTO6000
  241. 5470 GOTO5405
  242. 5490 REM *** ADD A ROUND
  243. 5500 GOSUB2950:GOSUB500: REM GET COURSE NAME
  244. 5503 IF CX=0THENGOSUB1500:GOSUB2900:PRINT"COURSE NOT ON FILE[151]":GOTO5405
  245. 5505 CN$=CR$(CX,1):CP=RC+1:RD$(CP,1)=CX$:CH$="Y"
  246. 5520 GOSUB1800: REM UNDERLINES IN TABLE
  247. 5530 GOSUB1500: REM DISPLAY SCREEN
  248. 5540 GOSUB2000:REM DISPLAY DATA ON SCR
  249. 5550 GOSUB2600: REM GET DATA
  250. 5560 GOSUB2400: REM CALC SCORES
  251. 5570 GOSUB2200: REM CALC BIRD PAR ETC
  252. 5580 RC=RC+1
  253. 5590 GOTO5405
  254. 5648 REM *** VIEW NEXT ROUND
  255. 5650 GOSUB2950:IF CP+1>RC THEN 5400
  256. 5660 CP=CP+1:GOSUB2000:GOSUB2400:GOSUB2200
  257. 5670 GOTO5400
  258. 5698 REM *** BACK 1 RECORD
  259. 5700 GOSUB2950:IF CP-1<1 THEN 5400
  260. 5710 CP=CP-1:GOSUB2000:GOSUB2400:GOSUB2200
  261. 5720 GOTO5400
  262. 5760 GOSUB2900:PRINT"ARE YOU SURE? (Y/N)[146]"
  263. 5770 GETS$:IFS$="" THEN 5770
  264. 5780 IF S$<>"Y"THEN GOSUB2950:GOTO5400
  265. 5790 GOSUB2900:PRINT"O.K.  DELETING                 "
  266. 5800 FORX=CPTORC+1
  267. 5810 FOR Y=1TORL
  268. 5820 RD$(X,Y)=RD$(X+1,Y)
  269. 5830 NEXTY:NEXTX
  270. 5840 FORX=CPTORC+1
  271. 5850 FORY=1TO18
  272. 5860 HG$(X,Y)=HG$(X+1,Y):HF$(X,Y)=HF$(X+1,Y)
  273. 5870 NEXTY:NEXTX
  274. 5880 RC=RC-1
  275. 5890 IF CP>RC THEN CP=RC
  276. 5900 GOSUB2000:GOSUB2400:GOSUB2200
  277. 5910 GOSUB2950:GOSUB2900:PRINT"DONE"
  278. 5920 FORX=1TO500:NEXT
  279. 5930 GOSUB2950:CH$="Y"
  280. 5940 GOTO 5400
  281. 5990 REM *** MODIFY ROUND
  282. 6000 GOSUB2950:POKE850,23:POKE851,3:SYS828
  283. 6010 PRINT"D[146]ATE  P[146]UTTS  1-18[146]  Q[146]UIT  N[146]AME  T[146]BL"
  284. 6020 GOSUB9400:GOSUB2950
  285. 6030 IF AN$="D" THEN FP=3:GOTO6080
  286. 6033 IF AN$="P" THEN FP=23:GOTO6080
  287. 6035 IF AN$<>"N"THEN 6043
  288. 6037 GOSUB500:IFCX=0 THEN 6040
  289. 6039 RD$(CP,1)=CX$
  290. 6040 GOSUB1500:GOSUB2000:GOSUB2400:GOSUB2200
  291. 6041 GOSUB2900:PRINT"DONE":GOTO6020
  292. 6043 IF AN$<>"T" THEN 6050
  293. 6045 GOSUB2400:GOSUB2900:PRINT"O.K.":GOTO6020
  294. 6050 IF VAL(AN$)>00 AND VAL(AN$)<19 THEN FP=VAL(AN$)+3:GOTO6080
  295. 6060 IF AN$="Q" THEN 6100
  296. 6070 GOTO6020
  297. 6075 CH$="Y"
  298. 6080 GOSUB3000
  299. 6086 GOSUB2900:PRINT"O.K."
  300. 6090 GOTO6020
  301. 6100 GOSUB2400:GOSUB2200
  302. 6110 POKE850,23:POKE851,3:SYS828
  303. 6120 PRINTSP$:POKE53280,11:GOTO5400
  304. 6190 REM *****************
  305. 6193 REM * CALC HANDICAP RTN
  306. 6195 REM *****************
  307. 6200 PRINT"[147]CALCULATE HANDICAP"
  308. 6210 PRINT"F1[146][151]  CALCULATE OVERALL HANDICAP"
  309. 6220 PRINT"F3[146][151]  HANDICAP FOR ONE COURSE"
  310. 6230 PRINT"F7[146][151]  MAIN MENU"
  311. 6240 PRINT"";OM$;"[146][151]":OM$="":OC$="":RX=0:PS=0
  312. 6250 GOSUB9200
  313. 6260 IF K$="[136]" THEN 5000: REM F7
  314. 6270 IF K$<>"[133]"ANDK$<>"[134]" THEN 6250
  315. 6280 IF K$="[134]" THEN OC$="Y":GOSUB500:PRINT"[147]"
  316. 6285 IF K$="[134]"ANDCX=0 THEN OM$="NOT DONE":GOTO6200
  317. 6290 IF K$="[133]" AND RC<5 THEN OM$="NOT ENOUGH ROUNDS TO CALCULATE":GOTO6200
  318. 6300 PRINT"[147]CALCULATING[151]"
  319. 6303 IF RC<=20 THEN PX=1
  320. 6305 IF RC>20THENPX=RC-19
  321. 6310 FORX=1TO20:FORY=1TO4:HC(X,Y)=0:NEXTY:NEXTX
  322. 6320 FORX=RC TO PX STEP-1
  323. 6330 IF OC$="Y"THENIFRD$(X,1)<>CX$GOTO6370
  324. 6340 PS=PS+1:HC(PS,1)=VAL(RD$(X,25))
  325. 6350 HC(PS,2)=VAL(RD$(X,1)):HC(PS,3)=VAL(RD$(X,3))
  326. 6360 HC(PS,4)=VAL(RD$(X,24)):RX=RX+1
  327. 6370 NEXTX
  328. 6380 IF RX<5 THEN OM$="MIN 5 ROUNDS REQUIRED":GOTO6200
  329. 6390 REM *** NOW SORT ON DIFFERENTIAL
  330. 6400 FORX=1TORX-1
  331. 6410 IF HC(X,1)<HC(X+1,1) THEN 6455
  332. 6420 FORY=1TO4:SC(Y)=HC(X,Y):NEXTY
  333. 6430 FOR Y=1TO4:HC(X,Y)=HC(X+1,Y):NEXTY
  334. 6440 FORY=1TO4:HC(X+1,Y)=SC(Y):NEXTY
  335. 6450 SR$="Y"
  336. 6455 NEXTX
  337. 6460 IF SR$="Y"THEN SR$="":GOTO6400
  338. 6470 REM DETERMINE # DIFFS NEEDED
  339. 6480 IF RX=5 THEN ND=1:GOTO6520
  340. 6490 IF RX=6 THEN ND=2:GOTO6520
  341. 6500 IF RX>20 THEN ND=10:GOTO6520
  342. 6510 ND=INT(RX/2)
  343. 6520 TD=0:FORX=1TOND:TD=TD+HC(X,1):NEXTX
  344. 6530 TD=(TD/ND)*.96
  345. 6540 TD=INT(TD+.5)
  346. 6550 PRINT"[147]YOUR HANDICP IS ";TD;
  347. 6560 IF OC$="Y" THEN PRINT" FOR ";CR$(CX,1)
  348. 6570 IF OC$<>"Y"THEN PRINT" FOR ALL COURSES"
  349. 6580 PRINT"";ND;" DIFFERENTIALS USED FROM ";RX;" ROUNDS"
  350. 6590 PRINT"";TAB(8);"F5[146] TO SEE ROUNDS USED"
  351. 6600 GOSUB9200:IFK$<>"[135]" THEN 6200
  352. 6610 PRINT"":TM=0
  353. 6620 FORX=1TORX
  354. 6625 DT=(LEN(STR$(HC(X,3))))-2:DT$=LEFT$(STR$(HC(X,3)),DT)+"-"
  355. 6626 DX$=STR$(HC(X,3)):DT$=DT$+MID$(DX$,DT+1)
  356. 6630 W1=HC(X,2):PRINT"[151]";CR$(W1,1);TAB(22);DT$;
  357. 6640 PRINTTAB(28);STR$(HC(X,4));TAB(32);STR$(HC(X,1));
  358. 6650 IF X<=ND THEN PRINT" _":GOTO6670
  359. 6660 PRINT
  360. 6670 TM=TM+1:IFTM<9 THEN 6700
  361. 6680 TM=0:PRINT"";TAB(7);"MORE - PRESS A KEY[151]"
  362. 6690 GOSUB9200:PRINT"[147]"
  363. 6700 NEXTX
  364. 6710 PRINTTAB(7);"ALL - PRESS A KEY[151]":GOSUB9200:GOTO5000
  365. 6800 PRINT"[147]";TAB(9);"PERSONAL GOLF STATISTICS"
  366. 6810 PRINT"F1[146]  [151]OVERALL BY COURSE"
  367. 6820 PRINT"F3[146]  [151]PARS BIRDS ETC"
  368. 6870 PRINT"F8[146]  [151]RETURN TO MAIN MENU"
  369. 6880 GOSUB9200
  370. 6890 IF K$="[140]" THEN 5000:REM F8
  371. 6900 IF K$="[133]" THEN 6950: REM F1
  372. 6910 IF K$="[134]"THEN 7500:REM F3
  373. 6940 GOTO6880
  374. 6950 PRINT"[147]":POKE850,10:POKE851,11:SYS828
  375. 6960 PRINT"CALCULATING STATS[151]"
  376. 6970 FORX=1TO20:FORY=0TO5:HC(X,Y)=0:NEXTY:NEXTX
  377. 6980 FORX=1TORC
  378. 6990 WX=VAL(RD$(X,1)):HC(WX,1)=HC(WX,1)+1:REM ROUNDS
  379. 7000 HC(0,1)=HC(0,1)+1
  380. 7010 HC(WX,2)=HC(WX,2)+VAL(RD$(X,24))
  381. 7020 HC(0,2)=HC(0,2)+VAL(RD$(X,24))
  382. 7030 HC(WX,3)=HC(WX,3)+VAL(RD$(X,23))
  383. 7040 HC(0,3)=HC(0,3)+VAL(RD$(X,23))
  384. 7050 FOR Y=1 TO 18
  385. 7060 IF HG$(X,Y)<>"Y" THEN 7090
  386. 7070 HC(WX,4)=HC(WX,4)+1
  387. 7080 HC(0,4)=HC(0,4)+1
  388. 7090 IF HF$(X,Y)<>"Y" THEN 7120
  389. 7100 HC(WX,5)=HC(WX,5)+1
  390. 7110 HC(0,5)=HC(0,5)+1
  391. 7120 NEXTY
  392. 7130 NEXTX
  393. 7140 PRINTTAB(10);"[147]OVERALL AVERAGES[151]"
  394. 7150 PRINT"   CRS  RND   SCORE  PUTT   HG %  HF %[151]"
  395. 7160 FORX=1TO20
  396. 7170 IFHC(X,1)=0 THEN 7300
  397. 7180 PRINT"  ";CR$(X,23);TAB(8);HC(X,1);
  398. 7190 W1=HC(X,2)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10
  399. 7200 PRINTTAB(13);W1;
  400. 7210 W1=HC(X,3)/HC(X,1):W1=INT((W1+.05)*10):W1=W1/10
  401. 7220 PRINTTAB(21);W1;
  402. 7230 W1=HC(X,4)/(HC(X,1)*18)
  403. 7240 W1=INT((W1+.05)*1000):W1=W1/10
  404. 7250 PRINTTAB(27);W1;
  405. 7260 W1=HC(X,5)/(HC(X,1)*18)
  406. 7270 W1=INT((W1+.05)*1000):W1=W1/10
  407. 7280 PRINTTAB(33);W1
  408. 7290 IF X=0 THEN RETURN
  409. 7300 NEXTX
  410. 7310 PRINT"TOTAL";TAB(8);HC(0,1);
  411. 7320 X=0:GOSUB7190
  412. 7330 POKE850,23:POKE851,17:SYS828
  413. 7340 PRINT"PRESS A KEY[155]"
  414. 7350 GOSUB9200:GOTO6800
  415. 7400 IF SV$="Y" THEN 7450
  416. 7410 IF CH$<>"Y" THEN 7450
  417. 7420 SV$="Y":OM$="CHANGES MADE - NO SAVE DONE"
  418. 7430 OP$="'Q' AGAIN TO VERIFY":GOTO5000
  419. 7450 PRINT"[147]END OF RUN":END
  420. 7500 PRINT"[147]A[146]CTUAL OR AV[146]ERAGE"
  421. 7510 GOSUB9200:IFK$<>"A"ANDK$<>"V" THEN 7500
  422. 7520 W$=K$:PRINT"CALCULATING":S$="Y"
  423. 7523 FORX=0TO30:FORY=0TO7:HC(X,Y)=0:NEXTY:NEXTX
  424. 7530 FORCP=1TORC
  425. 7540 GOSUB2200
  426. 7550 HC(W9,1)=HC(W9,1)+1
  427. 7555 HC(W9,2)=HC(W9,2)+EG
  428. 7560 HC(W9,3)=HC(W9,3)+BI
  429. 7565 HC(W9,4)=HC(W9,4)+PA
  430. 7570 HC(W9,5)=HC(W9,5)+BO
  431. 7575 HC(W9,6)=HC(W9,6)+DB
  432. 7580 HC(W9,7)=HC(W9,7)+OT
  433. 7590 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0
  434. 7600 NEXTCP
  435. 7610 FORX=1TO20:IFHC(X,1)=0THEN7630
  436. 7620 FORY=1TO7:HC(0,Y)=HC(0,Y)+ HC(X,Y):NEXTY
  437. 7630 NEXTX
  438. 7640 IF W$="A" THEN 7710
  439. 7650 FORX=0TO20:IFHC(X,1)=0THEN7700
  440. 7660 FORY=2TO7
  441. 7670 W=INT((HC(X,Y)/HC(X,1))*10)
  442. 7680 HC(X,Y)=W/10
  443. 7690 NEXTY
  444. 7700 NEXTX:S$="N":LC=0:T$="N"
  445. 7710 PRINT"[147] CRS  RND EGL  BRD  PAR  BOG  DBL  >DB[151]"
  446. 7720 FORX=1TO20:IFHC(X,1)=0THEN7810
  447. 7730 PRINTCR$(X,23);TAB(6);HC(X,1);
  448. 7740 Z=5:FORY=2TO7
  449. 7750 PRINTTAB(Z+5);HC(X,Y);
  450. 7760 Z=Z+5:NEXTY:LC=LC+1:PRINT
  451. 7770 IFLC<15 THEN 7800
  452. 7780 LC=0:GOSUB9190
  453. 7790 PRINT"[147] CRS  RND EGL  BRD  PAR  BOG  DBL  >DB[151]"
  454. 7800 IF T$="Y"THENRETURN
  455. 7810 NEXTX
  456. 7820 PRINT"TOTAL";TAB(6);HC(0,1);
  457. 7830 X=0:T$="Y":GOSUB7740
  458. 7840 GOSUB9190:GOTO5000
  459. 8000 PRINT"[147]";TAB(8);"PERSONAL GOLF STATISTICS"
  460. 8010 PRINTTAB(8);"HANDICAP AND STATISTICS"
  461. 8020 PRINT"[151] THIS PROGRAM ALLOWS YOU TO ENTER DATA"
  462. 8030 PRINT" ABOUT A ROUND OF GOLF.  YOU MAY SEE"
  463. 8040 PRINT" YOUR HANDICAP AND OTHER ASSORTED"
  464. 8050 PRINT" STATISTICS."
  465. 8060 PRINT"FOLLOW THE MENUS TO ENTER OR MODIFY"
  466. 8070 PRINT"INFORMATION.  A RED QUESTION MARK (?[151])"
  467. 8080 PRINT"WILL SHOW YOU WHERE THE CURSOR IS. IF"
  468. 8090 PRINT"YOU ENTER LESS THAN THE MAX NUMBER OF"
  469. 8100 PRINT"CHARACTERS, PRESS RETURN[151]."
  470. 8110 PRINT"YOU WILL BE ASKED TO ENTER THE SCORE "
  471. 8120 PRINT"ON EACH HOLE, AS WELL AS WHETHER YOU"
  472. 8130 PRINT"HIT THE GREEN AND FAIRWAY.  PRESSING"
  473. 8140 PRINT"RETURN FOR THE LAST TWO ASSUMES NO."
  474. 8160 EG=0:BI=0:PA=0:BO=0:DB=0:OT=0:SC=0:CZ=0:HD=0:PP=0
  475. 8200 RETURN
  476. 8798 REM *** GETS FOR HF AND HG
  477. 8800 POKE198,0:A$="":AN$=""
  478. 8810 GETA$:IFA$="" THEN 8810
  479. 8820 IF A$=CHR$(20) THEN 8810
  480. 8830 IF A$=CHR$(13)THEN RETURN
  481. 8840 AN$=A$:RETURN
  482. 8998 REM *** GETS FOR SCORES AND STUFF
  483. 9000 POKE198,0:A$="":AN$="":TM=0
  484. 9010 GETA$:IF A$="" THEN 9010
  485. 9020 IF A$=CHR$(20) THEN 9010
  486. 9030 IF A$=CHR$(13) ANDTM=0THEN9010
  487. 9035 IF A$=CHR$(13) THEN RETURN
  488. 9040 IF A$<"0"ORA$>"9"THEN 9010
  489. 9050 PRINTA$;
  490. 9060 AN$=AN$+A$:TM=TM+1
  491. 9070 IF TM=CU(FP,3)THEN RETURN
  492. 9080 GOTO9010
  493. 9190 POKE850,22:POKE851,7:SYS828:PRINT"PRESS A KEY[151]"
  494. 9200 GETK$:IFK$="" THEN 9200
  495. 9210 RETURN
  496. 9398 REM *** INP FOR MODIFY RTN
  497. 9400 POKE198,0:AN$="":A$="":TM=0
  498. 9410 GETA$:IFA$="" THEN 9410
  499. 9413 IF A$=CHR$(20) THEN 9410
  500. 9415 IF A$=CHR$(13)THENRETURN
  501. 9420 IF(A$="D"ORA$="P"ORA$="Q")ANDTM=0THENAN$=A$:RETURN
  502. 9422 IF(A$="N"ORA$="T")ANDTM=0THENAN$=A$:RETURN
  503. 9430 TM=TM+1:IFA$>"0"ANDA$<"9"THEN9440
  504. 9432 IFA$="9"ANDTM=1THENTM=2:GOTO9440
  505. 9434 IF A$="0"ANDTM=2 THEN RETURN
  506. 9435 GOTO 9410
  507. 9440 AN$=AN$+A$
  508. 9450 IF TM=2 THEN RETURN
  509. 9460 GOTO9410
  510. 9600 INPUT#15,EN,EM$
  511. 9610 IF EN=0 THEN RETURN
  512. 9620 AB$="Y":RETURN
  513. 10000 DATA 2,13,20,4,16,4,4,34,4
  514. 10010 DATA 8,10,2,8,31,2
  515. 10020 DATA 9,10,2,9,31,2
  516. 10030 DATA 10,10,2,10,31,2
  517. 10040 DATA 11,10,2,11,31,2
  518. 10050 DATA 12,10,2,12,31,2
  519. 10060 DATA 13,10,2,13,31,2
  520. 10070 DATA 14,10,2,14,31,2
  521. 10080 DATA 15,10,2,15,31,2
  522. 10090 DATA 16,10,2,16,31,2
  523. 10100 DATA 4,5,2,18,11,2
  524. 10110 DATA 18,21,3,18,33,4
  525. 10998 REM M/L FOR CURSOR
  526. 11000 DATA 174,82,03,172,83,03,24,32,240,255,96
  527.